package ar.com.android.alco.adapters;

import java.text.SimpleDateFormat;
import java.util.List;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import ar.com.android.alco.entities.RegistroComidas;
import ar.com.android.alco.forms.R;

public class ListViewRegistroAdapter extends ArrayAdapter<RegistroComidas>
{
	
	public enum RegistroOpciones {
		DESAYUNO(0), MEDIA_MANNANA(1), ALMUERZO(2), MEDIA_TARDE(3), MERIENDA(4), CENA(5);
		private int code;
		RegistroOpciones(Integer code) {this.code = code;}
		public static RegistroOpciones valueOf(int itemId) {
			for (RegistroOpciones registroOpciones : RegistroOpciones.values()) {
                if (itemId == registroOpciones.code) 
                    return registroOpciones;
            } 
			return null;
		}
	}
	
	public List<RegistroComidas> items;
	Activity activity;
	
	public ListViewRegistroAdapter(Activity activity, int textViewResourceId, List<RegistroComidas> items) {
		super(activity, textViewResourceId, items);
		this.items = items;
		this.activity = activity;
	}

	@Override
	public int getCount() {
		return items.size();
	}

	@Override
	public RegistroComidas getItem(int position) {
		return items.get(position);
	}

	@Override
	public long getItemId(int position) {
		return (items.get(position)).getIdRegistroComidas();
	}

	private class ViewHolder {
	    TextView registro;
	    TextView descripcion;
	    TextView hora;
	    TextView creditos;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		ViewHolder holder;
		LayoutInflater inflater =  activity.getLayoutInflater();
		
		if (convertView == null)
		{
			convertView = inflater.inflate(R.drawable.lv_registro_item, null);
			holder = new ViewHolder();
			holder.registro = (TextView) convertView.findViewById(R.id.registro);
			holder.descripcion = (TextView) convertView.findViewById(R.id.descripcion);
			holder.hora = (TextView) convertView.findViewById(R.id.hora);
			holder.creditos = (TextView) convertView.findViewById(R.id.creditos);

			convertView.setTag(holder);
		}
		else
			holder = (ViewHolder) convertView.getTag();

		RegistroComidas registroComidas = items.get(position);
		
		String registro = null;
		if(registroComidas.getIdRegistro() == RegistroOpciones.DESAYUNO.code) {
			registro = activity.getText(R.string.desayuno).toString();
		}
		else if(registroComidas.getIdRegistro() == RegistroOpciones.MEDIA_MANNANA.code) {
			registro = activity.getText(R.string.mediaMannana).toString();
		}
		else if(registroComidas.getIdRegistro() == RegistroOpciones.ALMUERZO.code) {
			registro = activity.getText(R.string.almuerzo).toString();
		}
		else if(registroComidas.getIdRegistro() == RegistroOpciones.MEDIA_TARDE.code) {
			registro = activity.getText(R.string.mediaTarde).toString();
		}
		else if(registroComidas.getIdRegistro() == RegistroOpciones.MERIENDA.code) {
			registro = activity.getText(R.string.merienda).toString();
		}
		else if(registroComidas.getIdRegistro() == RegistroOpciones.CENA.code) {
			registro = activity.getText(R.string.cena).toString();
		}
		
		SimpleDateFormat sdf = new SimpleDateFormat("K:mm");
		
		holder.registro.setText(registro);
		holder.descripcion.setText(registroComidas.getDescripcion());
		holder.hora.setText(sdf.format(registroComidas.getFechaHoraRegistro()));
		holder.creditos.setText(registroComidas.getCreditos().toString());

		return convertView;	
	}

}
